import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 载入字体

#print('请输入需录入的人脸图片路径/文件名：')
#pic_name=input()

# 利用MATLAB显示图片  
def pshow(words,picture):
    plt.imshow(picture[:,:,::-1])
    plt.title(words), plt.xticks([]), plt.yticks([])
    plt.show()

# 图像路径 我用的相对路径
filepath = 'img/123.jpg'
# 读取文件
faceImg = cv2.imread(filepath)
# 转换灰色
gray = cv2.cvtColor(faceImg,cv2.COLOR_BGR2GRAY)

# 加载人脸识别分类器
# 官方已有的分类器  https://github.com/opencv/opencv/tree/master/data/haarcascades
# github的不好下载, 可以从码云上找
# Python\Python38-32\Lib\site-packages\cv2\data  这个目录下也有
classifier = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
color = (0,255,0)

# 识别器进行识别
faceRects = classifier.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(32, 32))
# 识别器返回一个列表, 里面是每个识别出的人脸的区域, 左上和右下定点的坐标
# print(faceRects)  #[[113  42  60  60]]    前两个值是左上定点的xy坐标,第三个是width 宽度对应y的变化, 另一个就是x的

# 判断识别结果集合长度
if len(faceRects):
    for faceRect in faceRects:
        x,y,w,h = faceRect
        # 框选出人脸   最后一个参数2是框线宽度
        cv2.rectangle(faceImg,(x, y), (x + h, y + w), color, 2)
        

pshow('1',faceImg)
# 显示图像

